5.2 条件语句
在实际的项目开发中,我们是一定会用到判断的。
比如判断a
、b
两个数字的大小,如果a
大于b
执行逻辑1
;如果a
小于b
那么执行逻辑2
。
类似上面的这种操作在我们实际使用时是很常见的。与大多数语言一样,Go
语言也是使用if
、else
、else if
来进行判断。
本节代码存放目录为 lesson14
if else 的使用
我们单纯使用if
来实现业务逻辑。如下所示:
a := 1
b := 2
if a > b {
fmt.Println("a > b")
}
在上面的代码中,我们使用if
进行了判断,与大多数语言不同的是,a > b
不需要使用括号括起来。
同时需要注意的是:if a > b {
,这里的大括号不能换行,否则编译后可能会出现问题,因为Go
语言在编译时会进行一些格式优化。
我们可以将if
、else
配合使用。如下所示:
if a > b {
fmt.Println("a > b")
} else {
fmt.Println("a < b or a == b")
}
但是在函数里面我们一般会这样:
if a > b {
fmt.Println("a > b")
return
}
fmt.Println("a < b or a == b")
在上面的代码中,我们在a > b
时就直接进行了返回,而不用进行else
,这样可以让代码简洁一些。
同时我们还可以配合else if
一起使用。代码如下:
if a > b {
fmt.Println("a > b")
} else if a == b {
fmt.Println("a == b")
} else {
fmt.Println("a < b")
}
在上面的代码中,我们增加了else if
的使用,在实际的开发过程中,一般我们会将优先满足的条件放在前面。
switch 使用
switch
与其他语言基本是一样的,使用结构如下:
switch a {
case 1:
fmt.Println("a == 1")
case 2:
fmt.Println("a == 2")
case 3:
fmt.Println("a == 3")
default:
fmt.Println("a value null")
}
在上面的代码中,我们使用switch
进行了条件判断,其中包含了几个基本内容:switch
、变量值
、case
、default
。
其中switch
、变量值
、case
是必须的,default
是非必须的。
从上面的代码可以看出,在Go
语言中switch
是没有break
的。
另外Go
语言中switch
还具有另外一个比较特殊的东西,叫做:fallthrough
。如下代码所示:
switch a {
case 1:
fmt.Println("a == 1")
fallthrough
case 2:
fmt.Println("a == 2")
case 3:
fmt.Println("a == 3")
default:
fmt.Println("a value null")
}
在上面的代码中,我们在case 1
下面增加了fallthrough
。结果输出如下:
a == 1
a == 2
从输出我们可以看出,case 2
也被执行了,这也正是fallthrough
的特性。
也就是:当匹配到case
之后,还会强制执行下一个case
。
在上面的代码中,匹配到了case 1
,由于case 1
中包含了fallthrough
,所以继续执行了case 2
,输出了a == 2
。
小结
条件语句是组成程序的重要组成部分,Go
语言的条件语句与其他编程语言基本是一致的。
针对本节总结如下:
可以使用
if
、else if
、else
进行组合判断if
条件后的大括号不能换行,必须跟在一起在使用条件语句时,我们一般遵循:先满足先处理,先满足先返回的原则
可以使用
switch
进行值选择判断switch
与其他语言使用相同,不同的是不用break
可以使用
fallthrough
强制跳转到下一个case